package com.liuyucheng.idea_springboot.spring.factorybean;

import org.springframework.beans.factory.FactoryBean;
import org.springframework.stereotype.Component;

// 实现FactoryBean接口来创建MyComplexObject
@Component // 使用@Component注解将FactoryBean注册到Spring容器中
public class MyComplexObjectFactoryBean implements FactoryBean<MyComplexObject> {

    // 可以通过依赖注入或配置来设置属性
    private String name = "默认名称";
    private int age = 0;

    // 实现getObject方法，编写创建对象的逻辑
    @Override
    public MyComplexObject getObject() throws Exception {
        // 这里可以是复杂的对象创建逻辑
        return new MyComplexObject(name, age);
    }

    // 实现getObjectType方法，返回对象的类型
    @Override
    public Class<?> getObjectType() {
        return MyComplexObject.class;
    }

    // 可选：重写isSingleton方法，控制是否为单例
    @Override
    public boolean isSingleton() {
        return true; // 默认返回true，表示单例
    }

    // 设置属性的setter方法（如果需要外部配置）
    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }
}